<?php



/**

 * ECSHOP 支付宝插件

 * ============================================================================

 * $Author: HaiBin $

 * $Id: CIB.php 2012-11-30 11:57:00 HaiBin $

 */

 //return_url http://www.hstyle.com/respond.php?code=cib

if (!defined('IN_ECS'))

{

    die('Hacking attempt');

}




global $_LANG;

$_LANG['cib'] = '兴业银行';

$_LANG['cib_desc'] = '兴业银行网上银行';

$_LANG['cib_account'] = '商户ID';

$_LANG['cib_key'] = '通信密钥';

$_LANG['pay_button'] = '立即支付';



/* 模块的基本信息 */

if (isset($set_modules) && $set_modules == TRUE)

{

    $i = isset($modules) ? count($modules) : 0;


    /* 代码 */

    $modules[$i]['code']    = basename(__FILE__, '.php');


    /* 描述对应的语言项 */

    $modules[$i]['desc']    = 'cib_desc';


    /* 是否支持货到付款 */

    $modules[$i]['is_cod']  = '0';


    /* 是否支持在线支付 */

    $modules[$i]['is_online']  = '1';


    /* 作者 */

    $modules[$i]['author']  = 'HaiBin';


    /* 网址 */

    $modules[$i]['website'] = 'http://www.hstyle.com';



    /* 版本号 */

    $modules[$i]['version'] = '01';


    /* 配置信息 */

    $modules[$i]['config']  = array(

        array('name' => 'cib_account',           'type' => 'text',   'value' => ''),

        array('name' => 'cib_key',               	'type' => 'text',   'value' => ''),

    );


    return;

}



/**

 * 类

 */

class cib

{

    /**

     * 构造函数

     *

     * @access  public

     * @param

     *

     * @return void

     */

    function cib()

    {

		$this->bank_id = 'CIB';

    }



    function __construct()

    {

        $this->cib();

    }



    /**

     * 生成支付代码

     * @param   array   $order      订单信息

     * @param   array   $payment    支付方式信息

     */

    function get_code($order, $payment)

    {

        $parameter = array(

            'service'           => 'cib.netpay.b2c',	//服务名称
			
			'ver'           	=> '01',	//接口版本号
			
			'mrch_no'           => $payment['cib_account'],	//商户代码
			
			'ord_no'           	=> $order['order_sn'],	//订单编号
			
			'ord_date'          => date('Ymd',$order['add_time']),		//订单生成日期
			
			'cur'           	=> 'CNY',	//币种
			
			'ord_amt'           => $order['order_amount'],	//订单金额
			
        );


        $sign  = '';


        foreach ($parameter AS $key => $val)

        {

            $sign  .= "$key"."$val";

        }

        $sign  .= $payment['cib_key'];

        $sign  = strtoupper(md5($sign));

		$parameter['mac'] = $sign;	//校验码，即加密签名
		
		//支付表单
		$button  = "\n<form action='https://220.250.30.210:38091/payment/entry.action' method='post' target='_blank'>\n";

        $button .= "<input type='hidden' name='service' value='".$parameter['service']."'>\n";

        $button .= "<input type='hidden' name='ver' value='".$parameter['ver']."'>\n";

        $button .= "<input type='hidden' name='mrch_no' value='".$parameter['mrch_no']."'>\n";

        $button .= "<input type='hidden' name='ord_no' value='".$parameter['ord_no']."'>\n";

        $button .= "<input type='hidden' name='ord_date' value='".$parameter['ord_date']."'>\n";

        $button .= "<input type='hidden' name='cur' value='".$parameter['cur']."'>\n";

        $button .= "<input type='hidden' name='ord_amt' value='".$parameter['ord_amt']."'>\n";

        $button .= "<input type='hidden' name='mac' value='".$parameter['mac']."'>\n";

        $button .= "<input type='submit' value='" . $GLOBALS['_LANG']['pay_button'] . "'  class='zhifu'>";

        $button .= "</form>\n";
				

        return $button;

    }



    /**

     * 响应操作

     */

    function respond()

    {

        if (!empty($_POST))

        {

            foreach($_POST as $key => $data)

            {

                $_GET[$key] = $data;

            }

        }

        $payment  = get_payment($_GET['code']);
		
				
		/* 根据订单号获取支付log_id */
		$log_id = get_order_id_by_sn(trim($_GET['ord_no']));


        /* 检查支付的金额是否相符 */
        if (!check_money($log_id, $_GET['pay_amt']))

        {
            return false;

        }
		
		/* 检查是否兴业银行返回结果 */
        if ($_GET['bank'] != 'cib')

        {
            return false;

        }


        /* 检查数字签名是否正确 */

        $sign = 'bank' . $_GET['bank'];
				
		$sign .= 'mrch_no' . $_GET['mrch_no'];
		
		$sign .= 'ord_no' . $_GET['ord_no'];
		
		$sign .= 'cur' . $_GET['cur'];
								
		$sign .= 'ord_amt' . $_GET['ord_amt'];
		
		$sign .= 'pay_amt' . $_GET['pay_amt'];
		
		$sign .= 'sno' . $_GET['sno'];
		
		$sign .= $payment['cib_key'];
		

        if (strtoupper(md5($sign)) != $_GET['mac'])

        {

            return false;

        }



        if (!empty($_GET['sno']))
        {

            /* 改变订单状态 */

            order_paid($log_id);


            return true;

        }
        else

        {

            return false;

        }

    }

}



?>